iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0

二元樹(Binary Tree),為各節點最多只有兩個子節點的樹結構,分別稱為左子節點和右子節點,左右子節點之間具有次序關係,左子節點在右子節點前,順序不可顛倒。

二元樹的特性 :

  • 節點:樹中的每個元素都稱為節點。每個節點包含一個值或資料,並可能指向其子節點的指標。
  • 根節點:二元樹的最頂端節點稱為根節點,只有一個根節點。
  • 子節點:根節點下的節點稱為子節點。每個節點最多有兩個子節點:左子節點和右子節點。
  • 父節點:如果節點A是另一個節點B的子節點,則B稱為A的父節點。
  • 葉節點:沒有子節點的節點稱為葉節點或終端節點。
  • 高度:樹的高度是從根節點到最深葉節點的最大層級數。空樹的高度為-1,只有一個根節點的樹高度為0。

二元樹的種類 :

  • 完全二元樹 : 所有節點都有兩個子節點或沒有子節點。
  • 完美二元樹 : 除了最後一層,所有層都是滿的,且最後一層的節點向左排列。
  • 平衡二元樹 : 所有節點都有兩個子節點,且所有葉節點皆位於同一層。
  • 二元搜尋樹 : 每個節點的左子節點皆小於右子節點,且右子節點皆大於左子節點。
  • 滿二元樹 : 所有節點都有兩個子節點或沒有子節點。

二元樹的遍歷方式

  • 前序遍歷:先訪問根節點,再訪問左子樹,最後訪問右子樹。
  • 中序遍歷:先訪問左子樹,再訪問根節點,最後訪問右子樹。對於二元搜尋樹,中序遍歷將會按遞增順序訪問節點。
  • 後序遍歷:先訪問左子樹,再訪問右子樹,最後訪問根節點。
  • 層次遍歷:按層次從上到下、從左到右訪問節點,通常使用佇列來實現。

優點 :

  • 結構簡單:二元樹的結構較為簡單,容易理解和實現,因此成為許多複雜數據結構的基礎。
  • 高效的搜尋、插入和刪除操作:二元搜尋樹的搜尋、插入和刪除的時間複雜度為O(log⁡n),適合需要高頻率搜尋的問題。

缺點 :

  • 空間需求:相比於陣列或鏈結串列,二元樹的每個節點都需要額外的指標指向子節點,因此會佔用更多的內存空間。
  • 不適合隨機訪問:二元樹的結構決定了它不適合隨機訪問,因為無法像陣列那樣通過索引快速定位到某個節點。

參考資料 : 二元樹 - 維基百科


上一篇
Day4 Binary Search 題目3:74. Search a 2D Matrix
下一篇
Day6 Binary Tree 題目1 : 98. Validate Binary Search Tree
系列文
C++刷題:LeetCode Top 100 Liked30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言